package zengqiang.day04

fun main(args: Array<String>) {
    var f=Father()
    f.wash()

    var f1=Father1(Son())
    f1.wash()
}
interface WashPower{
    fun wash()
}
class Son:WashPower{
    override fun wash() {
        println("儿子洗碗")
    }

}

//委托的方式一
class Father:WashPower by Son()

//委托方式二
//含义：传入有洗碗能力的对象，同时使用该对象的洗碗能力，是多态的使用
//这样更活，不像方式一这么限制严格，能使用的对象更多
class Father1(var washPower: WashPower):WashPower by washPower{
    override fun wash() {
        //委托的加强,如果不需要委托加强，该方法可省略不写
        //甚至没有其他方法的时候，连类的{}都可以省略
        println("洗碗前")
        washPower.wash()
        println("洗碗后")
    }
}